#============================================================
#	Base
#============================================================
#  基础物品
#============================================================
# @datetime: 2022-3-3 22:37:18
#============================================================
class_name BaseItem
extends KinematicBody2D


export var item_name : String setget set_item_name
export var texture : Texture setget set_texture
# 增加的属性
export var property : Dictionary setget set_property, get_property


onready var __n_collision__ := $CollisionShape2D as CollisionShape2D
onready var _sprite = get_node("CenterContainer/Sprite")


#============================================================
#   Set/Get
#============================================================
func get_data() -> Dictionary:
	return get_property()

func set_data(value: Dictionary) -> void:
	set_property(value)

##  获取物品数据
## @return  
func get_property() -> Dictionary:
	property['name'] = item_name
	if texture:
		property['icon'] = texture.resource_path
	return property


##  设置属性
## @value  
func set_property(value: Dictionary) -> void:
	property = value
	
	var item_data : ItemBean = JsonUtil.dict2object(property, ItemBean)
	set_item_name(item_data.name)
	set_texture(item_data.texture)


func set_texture(value: Texture) -> void:
	texture = value
	if self.is_inside_tree():
		_sprite.texture = texture


func set_item_name(value: String) -> void:
	item_name = value


#============================================================
#   内置
#============================================================
func _enter_tree():
	property = property.duplicate(true)
	# 添加属性包装器
	PropertyWrapper.new(self).init_property(get_property())


func _ready():
	if item_name == "":
		item_name = filename.get_file().get_basename()
	_sprite.texture = texture


#============================================================
#   自定义
#============================================================
##  修改数据 
## @origin  原始数据
## @data  修改的数据
func alert_property(origin: Dictionary, data: Dictionary) -> Dictionary:
	for key in data:
		origin[key] = data[key]
	return property

##  拾取
func pickup():
	queue_free()



